﻿#!usr/bin/env python3
import math,random

lst=[]  #list列表
s1 = set() #set 集合
tpl = () #tuple 元组
dic = {} # dict 字典

#创建集合可以:
s1={"a",'b'}

#但是空集合必须是
s1 = set()
s1 = {} #这个则是dict了

rg = random.randrange(1,10,5)
print(rg)
str1 = "HelloWorld"
print(str1.find(" "))
print(str1.isalnum()) #字符长度大于0 并且只有数字或者字母
print(str1.isalpha()) #是否只包含字母
print(str1.isdigit()) #是否只包含数字

# s.join(seqStr) 在seqStr的每个字符之间插入s 
print("-".join("Hello")) # H-e-l-l-o; 

tranTab = str.maketrans("abc","123") #创建字符串映射表
src = "Hell ahbkc"
src = src.translate(tranTab) #执行映射替换 
print(src,src.replace('H',"J"))

src = "Hello World wellcome"
print(src.split("o"))

lst = [5,2,4,7]
lst.insert(5,10)
lst.sort()
print(lst)
lst = ["google","baidu","tencent","taobao"]
print(sorted(lst,key=lambda x:x[1],reverse=True)) #降序(从大到小)
print("-".join(lst))

d1 = dict([('age',25),('name','kfz'),("career","programmer")])
print(d1)
for k,v in d1.items():
    print(k,v)

def func(a,b,c,**kw):
    print(a,b,c,kw)
    
func(1,2,4,ct=11,name='b')

vec1 = [1,2,3,4,5,6]
vec2 = [10,20,30,40]
vec3 = [100,200,300,400]
#同时遍历多个列表,并且以长度最小的为基准
for a,b,c in zip(vec1,vec2,vec3): 
    print(a,b,c)

import sys,os
#from utils.StrUtil import fmtSkill #可以是包名 模块名 类名 函数名
#import utils.StrUtil #最后一个必须是模块名
from utils import * #最后一个必须是模块名

'''
from package import xx 这样导入 import后面可以是模块名 类名 函数名

import package.item.subItem.xxx 这样导入 最后一个必须是模块名

'''
print(os.path.abspath("."),sys.path)
#print(dir(utils.StrUtil))
#print(dir(utils.ArrUtil))
#print(dir(StrUtil))

s1 = "{0[a]}是一个好人,来自{1[1]}".format({"a":1,"b":2},["gz","sz"])
s1 = "{0}是一个好人,来自{1[1]}".format("kfz",['gz','sz'])
print(s1)

with open('MyPy3log.txt','r',encoding='utf-8') as f:
    #f.write("你好吗Hello python 3\nwellcome")
    st = f.readline()
    print("读取行:",st,f.readlines(2))

#序列化模块
import pickle

#序列化
data1 = {'name':"kfz","age":25}
output = open("data.pkl",'wb')
pickle.dump(data1,output) #第一次写入
pickle.dump([1,23,30],output,-1)#第二次写入,-1表示在末尾追加
output.close()

#反序列化
pkl_file = open("data.pkl",'rb')
pklObj = pickle.load(pkl_file) #读取第一次写入的
print(pklObj)
pklObj = pickle.load(pkl_file) #读取第二次写入的
print(pklObj)

import os
print(os.getcwd(),os.listdir(os.getcwd()))

wdpath = os.getcwd()

testPath = os.path.join(wdpath,"testDir")
if not os.path.exists(testPath):    
    os.mkdir(testPath)
else:
    os.rmdir(testPath)
    
#创建多级目录
levelPath = os.path.join(wdpath,"levelDir/test/txtFile")
if os.path.exists(levelPath):
    os.removedirs(levelPath)
os.makedirs(levelPath)

#面向对象
class People():
    pass
class Student():
    def say(self):
        print("I am a stu!")
        
class BoyStu(People,Student):#多继承
    __addr = "" #私有属性
    def say(self): #重写方法
        #super().say() #调用父类方法
        print("I am a boy stu!")
    def __getMyAddr(self):#私有方法
        return __addr
    
    def __del__(self):
        print("释放")
    
p = People()
bstu = BoyStu()
bstu.say()

import calendar
print(calendar.monthrange(2016,9))

import re

s = "{<color='#ff00cc'这是描述是>}什么东西啊啦啦{哈哈<name='aa'>}"

ret = re.match('{.*?}',s)
print(ret.group())

s = re.sub('{.*?}',"FF",s)
print(s)

import time

print(time.localtime())
print(time.altzone)

print(calendar.calendar(2016))





